Computer systems may include different resources used by one or more host processors. Resources and host processors in a computer system may be interconnected by one or more communication connections. These resources may include, for example, data storage devices such as those included in the data storage systems manufactured by EMC Corporation. These data storage systems may be coupled to one or more host processors and provide storage services to each host processor. Multiple data storage systems from one or more different vendors may be connected and may provide common data storage for one or more host processors in a computer system.
A host processor may perform a variety of data processing tasks and operations using the data storage system. For example, a host processor may perform basic system I/O operations in connection with data requests, such as data read and write operations.
Host processor systems may store and retrieve data using a storage system containing a plurality of host interface units, disk drives, and disk interface units. Such storage systems are provided, for example, by EMC Corporation of Hopkinton, Mass. The host systems access the storage system through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage system and the storage system provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage system directly, but rather, access what appears to the host systems as a plurality of logical disk units, logical devices, or logical volumes (LVs). The logical disk units may or may not correspond to the actual disk drives. Allowing multiple host systems to access the storage system allows the host systems to share data stored therein.
In connection with data storage, a host may in one approach issue I/O operations to copy data from a source location on a source device to a target location on a target device. The source and target devices may be on the same or different data storage systems. To perform the operation, the host may issue a read command to read the data to be copied from the source location of the source device from a source data storage system. In response, the source data storage system may send the requested data across a network connection to the host. The host may then issue a write command to a target data storage system including the target device. For the write operation, the host transmits the data to the target data storage system whereby the target data storage system writes the data to the target location of the target device.
It will be appreciated by those skilled in the art that a problem with the above approach to copying data from source to target location is the consumption of host computer resources. For example, host computer memory, bandwidth to and from host computers, etc. However, this issue can be addressed by another approach to copying data from source to target location known herein as offloaded data transfer (ODX) in which data movement operations are offloaded from host computers. That is, rather than copy data from a data storage source to a host computer (where the data is buffered), and then from the host computer to a data storage destination, data is copied from the data storage source directly to the data storage destination. Such offloading of data movement operations saves host computer resources.
In one example of the ODX approach, the host computer provides a “populate token” (PT) request which identifies, to the data storage system, particular host data for copying. The data storage system returns a token to the host computer in response to the PT request. Thereafter, devices are able to identify the particular host data using the token. For example, the host computer can subsequently provide to the data storage system a “write using token” (WUT) request which may, inter alia, include (i) the token and (ii) a data storage destination. The data storage system responds to the WUT request by performing a WUT operation which copies the particular host data from the data storage source directly to the data storage destination without buffering the particular host data on the host computer. Windows ODX is an offloaded data transfer technology which is provided by Microsoft Corporation of Redmond, Wash. and which operates in a manner similar to that described above.
Although, the above ODX approach does address the issue of host resource consumption, it can suffer when dealing with a large request. For example, upon receipt, the request may be partitioned into multiple sub-requests that are issued sequentially. It will be appreciated that when these requests complete the originator may immediately start the next request and so on. However, if the multiple requests are completing around the same time on different cores then it is possible that the next round of requests will be out of order. This can cause problems in the event that a pre-fetcher is deployed to detect sequential reads and get the next piece of data ready. In this scenario, the out of order requests can confuse the pre-fetcher by causing it to switch between forward and reverse pre-fetching. This can hurt performance.